package com.example.onlineanswer.model.dto;

import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 题目创建DTO
 */
@Data
public class QuestionCreateDTO {

    /**
     * 所属竞赛ID
     */
    @NotNull(message = "竞赛ID不能为空")
    private Long contestId;

    /**
     * 题目类型ID
     */
    @NotNull(message = "题目类型不能为空")
    private Long typeId;

    /**
     * 题目内容
     */
    @NotBlank(message = "题目内容不能为空")
    @Size(min = 2, max = 2000, message = "题目内容长度应在2-2000字符之间")
    private String content;

    /**
     * 难度（1：简单，2：中等，3：困难）
     */
    @NotNull(message = "难度不能为空")
    @Min(value = 1, message = "难度最小为1")
    @Max(value = 3, message = "难度最大为3")
    private Integer difficulty;

    /**
     * 分值
     */
    @NotNull(message = "分值不能为空")
    @Min(value = 1, message = "分值最小为1")
    @Max(value = 100, message = "分值最大为100")
    private Integer score;

    /**
     * 答题时间限制（秒）
     */
    @NotNull(message = "答题时间限制不能为空")
    @Min(value = 10, message = "答题时间最少为10秒")
    @Max(value = 300, message = "答题时间最多为300秒")
    private Integer timeLimit;

    /**
     * 题目顺序
     */
    private Integer orderNum = 0;

    /**
     * 选项列表（针对选择题）
     */
    @Valid
    @Size(min = 2, message = "至少需要2个选项")
    private List<QuestionOptionDTO> options;
} 